package teacher.abstracts;
/*
     抽象类中的成员的访问特点：
     -- 抽象类中可以有哪些成员：
           1. 属性： 静态和非静态
           2. 行为： 静态和非静态
           3. 构造方法
           4. 代码块 ： 静态 和 非静态
           5. 抽象方法                    可以有也可以没有
       面试题： 一个类中如果有抽象方法，那么它必然是抽象类，但是一个抽象类中不一定存在抽象方法

     -- 抽象类中成员的访问特点：
         明确：
             1. 抽象类无法直接创建对象
         问题1: 抽象类中的构造方法是干嘛用的？  进行参数传递使用
         问题2： 抽象类中的成员怎么调用？     通过抽象类的子类对象掉用
              步骤：
                  1. 定义一个子类,继承抽象类
                  2. 在测试方法中，创建子类对象
                  3. 子类对象调成员
 */
public class AbstractDemo2 {
    public static void main(String[] args) {
        // Father father = new Father();
        // 2. 在测试方法中，创建子类对象
        Zai zai = new Zai();
        zai.eat();
        System.out.println(zai.age);
    }
}
abstract class Father{
    // 1. 属性： 静态和非静态
    public int age;
    public static String name;
    // 2.  行为： 静态和非静态
    public void eat(){
        System.out.println("抽象类中的eat");
    }
    public static void sleep(){

    }
    // 3. 构造方法
    public Father() {
    }
    public Father(int age) {
        this.age = age;
    }
    // 4. 代码块 ： 静态 和 非静态
    {
    }
    static {}
    // 5. 抽象方法
    public abstract void show();
}
// 1. 定义一个子类,继承抽象类
class Zai extends Father{
    public Zai() {
        super();
    }

    @Override
    public void show() {

    }
}